home *** CD-ROM | disk | FTP | other *** search
/ Programming in Microsoft Windows with C# / Programacion en Microsoft Windows con C#.iso / Codigo / Barras de herramientas y barras de estado / TextBoxWithToolBar / TextBoxWithToolBar.cs next >
Encoding:
Text File  |  2002-06-27  |  4.9 KB  |  148 lines

  1. //-------------------------------------------------
  2. // TextBoxWithToolBar.cs ⌐ 2001 by Charles Petzold
  3. //-------------------------------------------------
  4. using System;
  5. using System.Drawing;
  6. using System.Windows.Forms;
  7.  
  8. class TextBoxWithToolBar: Form
  9. {
  10.      TextBox       txtbox;
  11.      MenuItem      miEditCut, miEditCopy, miEditPaste;
  12.      ToolBarButton tbbCut, tbbCopy, tbbPaste;
  13.  
  14.      public static void Main()
  15.      {
  16.                // El programa no se ejecuta sin esta sentencia.
  17.  
  18.           System.Threading.Thread.CurrentThread.ApartmentState =
  19.                                         System.Threading.ApartmentState.STA;
  20.  
  21.           Application.Run(new TextBoxWithToolBar());
  22.      }
  23.      public TextBoxWithToolBar()
  24.      {
  25.           Text = "Cuadro de texto con una barra de herramientas";
  26.  
  27.                // Crea el cuadro de texto.
  28.  
  29.           txtbox             = new TextBox();
  30.           txtbox.Parent      = this;
  31.           txtbox.Dock        = DockStyle.Fill;
  32.           txtbox.Multiline   = true;
  33.           txtbox.ScrollBars  = ScrollBars.Both;
  34.           txtbox.AcceptsTab  = true;
  35.  
  36.                // Crea la lista de imßgenes.
  37.  
  38.           Bitmap bm = new Bitmap(GetType(), 
  39.                                  "TextBoxWithToolBar.StandardButtons.bmp");
  40.  
  41.           ImageList imglst = new ImageList();
  42.           imglst.Images.AddStrip(bm);
  43.           imglst.TransparentColor = Color.Cyan;
  44.  
  45.                // Crea una barra de herramientas con un controlador del evento ButtonClick.
  46.  
  47.           ToolBar tbar = new ToolBar();
  48.           tbar.Parent = this;
  49.           tbar.ImageList = imglst;
  50.           tbar.ShowToolTips = true;
  51.           tbar.ButtonClick += 
  52.                          new ToolBarButtonClickEventHandler(ToolBarOnClick);
  53.  
  54.                // Crea el men· Edici≤n.
  55.  
  56.           Menu = new MainMenu();
  57.  
  58.           MenuItem mi = new MenuItem("&Edici≤n");
  59.           mi.Popup += new EventHandler(MenuEditOnPopup);
  60.           Menu.MenuItems.Add(mi);
  61.  
  62.                // Crea el elemento Cortar del men· Edici≤n.
  63.  
  64.           miEditCut = new MenuItem("Cor&tar");
  65.           miEditCut.Click += new EventHandler(MenuEditCutOnClick);
  66.           miEditCut.Shortcut = Shortcut.CtrlX;
  67.           Menu.MenuItems[0].MenuItems.Add(miEditCut);
  68.  
  69.                // Y crea el bot≤n Cortar en la barra de herramientas.
  70.  
  71.           tbbCut = new ToolBarButton();
  72.           tbbCut.ImageIndex = 4;
  73.           tbbCut.ToolTipText = "Cortar";
  74.           tbbCut.Tag = miEditCut;
  75.           tbar.Buttons.Add(tbbCut);
  76.  
  77.                // Crea el elemento Copiar del men· Edici≤n.
  78.  
  79.           miEditCopy = new MenuItem("&Copiar");
  80.           miEditCopy.Click += new EventHandler(MenuEditCopyOnClick);
  81.           miEditCopy.Shortcut = Shortcut.CtrlC;
  82.           Menu.MenuItems[0].MenuItems.Add(miEditCopy);
  83.  
  84.                // Y crea el bot≤n Copiar en la barra de herramientas.
  85.  
  86.           tbbCopy = new ToolBarButton();
  87.           tbbCopy.ImageIndex = 5;
  88.           tbbCopy.ToolTipText = "Copiar";
  89.           tbbCopy.Tag = miEditCopy;
  90.           tbar.Buttons.Add(tbbCopy);
  91.  
  92.                // Crea el elemento Pegar del men· Edici≤n.
  93.  
  94.           miEditPaste = new MenuItem("&Pegar");
  95.           miEditPaste.Click += new EventHandler(MenuEditPasteOnClick);
  96.           miEditPaste.Shortcut = Shortcut.CtrlV;
  97.           Menu.MenuItems[0].MenuItems.Add(miEditPaste);
  98.  
  99.                // Y crea el bot≤n Pegar en la barra de herramientas.
  100.  
  101.           tbbPaste = new ToolBarButton();
  102.           tbbPaste.ImageIndex = 6;
  103.           tbbPaste.ToolTipText = "Pegar";
  104.           tbbPaste.Tag = miEditPaste;
  105.           tbar.Buttons.Add(tbbPaste);
  106.  
  107.                // Establece un temporizador para activar los botones.
  108.  
  109.           Timer timer = new Timer();
  110.           timer.Interval = 250;
  111.           timer.Tick += new EventHandler(TimerOnTick);
  112.           timer.Start();
  113.      }
  114.      void MenuEditOnPopup(object obj, EventArgs ea)
  115.      {
  116.           miEditCut.Enabled = 
  117.           miEditCopy.Enabled = (txtbox.SelectionLength > 0);
  118.           miEditPaste.Enabled = 
  119.                Clipboard.GetDataObject().GetDataPresent(typeof(string));
  120.      }
  121.      void TimerOnTick(object obj, EventArgs ea)
  122.      {
  123.           tbbCut.Enabled =
  124.           tbbCopy.Enabled = (txtbox.SelectionLength) > 0;
  125.           tbbPaste.Enabled = 
  126.                Clipboard.GetDataObject().GetDataPresent(typeof(string));
  127.      }
  128.      void ToolBarOnClick(object obj, ToolBarButtonClickEventArgs tbbcea)
  129.      {
  130.           ToolBarButton tbb = tbbcea.Button;
  131.           MenuItem mi = (MenuItem) tbb.Tag;
  132.  
  133.           mi.PerformClick();
  134.      }
  135.      void MenuEditCutOnClick(object obj, EventArgs ea)
  136.      {
  137.           txtbox.Cut();
  138.      }
  139.      void MenuEditCopyOnClick(object obj, EventArgs ea)
  140.      {
  141.           txtbox.Copy();
  142.      }
  143.      void MenuEditPasteOnClick(object obj, EventArgs ea)
  144.      {
  145.           txtbox.Paste();
  146.      }
  147. }          
  148.